class Solution {
    public int maxProfit(int[] prices) {
        int n = prices.length;
        // 今天不持有股票的最大收益
        int curUnHold = 0;
        // 今天持有股票的最大收益
        int curHold = -prices[0];
        // 前天不持有股票的最大收益
        int prePreUnHold = 0;

        for (int i = 1; i < n; i++) {
            // 临时变量保存今天不持有股票的最大收益
            int temp = curUnHold;
            curUnHold = Math.max(curUnHold, curHold + prices[i]);
            curHold = Math.max(curHold, prePreUnHold - prices[i]);
            prePreUnHold = temp;
        }
        return curUnHold;
    }
}